
import { _decorator, Component, Node } from 'cc';
import { MINIGAME } from 'cc/env';
import { Message } from './Message';
import { ModuleCenter } from './ModuleCenter';
const { ccclass, property } = _decorator;
/**
 * 继承自Component
 * @method ReceiveMessage(Message) 子类必须实现 用于接受消息
 * @method addModule(ModuleBase) 子类必须在setModuleName后调用
 * @method closeModule(string) 销毁模块前需要调用
 */
@ccclass('ModuleBase')
export class ModuleBase extends Component {
    public static modules: ModuleBase[] = [];

    private _moduleName = "";

    
    public set moduleName(moduleName : string) {
        this._moduleName = moduleName;
    }
    
    public get moduleName() : string {
        return this._moduleName;
    }
    
    /**
     * 添加模块到父类中管理
     * @param module 
     */
    addModule(module: ModuleBase) {
        ModuleBase.modules.push(module);   
    }

    /**
     * 接受消息
     * @param message 
     */
    ReceiveMessage(message: Message) {

    }

    /**
     * 删除一个模块
     * @param moduleName 要删除模块的名字
     */
    closeModule(moduleName: string) {
        ModuleBase.modules.forEach((module, index) => {
            if (module.moduleName === moduleName) {
                ModuleBase.modules.splice(index,1);
            }
        })
    }


}
